//app.js
// import $http from '/utils/http'
var Utils = require('./utils/util.js'); //相对路径
import api from '/utils/api'
App({
  onLaunch: function () {
    //计算屏幕尺寸
    wx.getSystemInfo({
      success: res => {
        this.globalData.systemInfo = res
        this.globalData.windowHeight = res.windowHeight / (res.windowWidth / 750)
        this.globalData.screenHeight = res.screenHeight / (res.screenWidth / 750)
      }
    })
    //计算导航栏信息
    this.setNavBarInfo()
    // 登录 -- 原来在menu.js中
    wx.showLoading({
      title: '登陆中请稍候',
    })
    wx.login({
      success: res => {
        if (res.code) {
          //发起网络请求
          wx.request({
            url: api.login,
            method: "POST",
            data: { jscode: res.code },
            header: { 'content-type': 'application/json' },
            success: data => {
              wx.hideLoading()
              if (data.data.state == 0) {
                wx.setStorage({
                  data: data.header.token,
                  key: 'token',
                })
                // 这个存储可以不需要--需测试
                wx.setStorage({
                  data: false,
                  key: 'hasReg',
                })
                if (this.hasLoginCallback){
                  this.hasLoginCallback(this.globalData.hasLogin);
                }
              } else if (data.data.state == 1) {
                // state == 1 的情况才会返回用户姓名之类的数据
                this.globalData.hasLogin = true
                data.data.data = JSON.parse(Utils.decrypt(data.data.data)); //解密
                wx.setStorage({
                  data: data.data.data.name,
                  key: 'userName',
                })
                wx.setStorage({
                  data: data.data.data.workno,
                  key: 'workNo',
                })
                //登陆信息全量存储
                wx.setStorage({
                  data: data.data,
                  key: 'logindata',
                })
                wx.setStorage({
                  data: data.header.token,
                  key: 'token',
                })
                // wx.setStorage({
                //   data: true,
                //   key: 'hasReg',
                // })
                this.globalData.hasReg = true
                // 处理异步请求此请求未回调成功情况下page.onLoad已执行拿不到token和hasLogin的情况
                if (this.hasLoginCallback){
                  this.hasLoginCallback(this.globalData.hasLogin);
                }
              }
            },
            fail: err => {
              console.log(err)
            }
          })
        } else {
          // console.log('登录失败！' + res.errMsg)
          wx.clearStorage()
        }
      }
    })
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: res => {
              // console.log(res)
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  },
  setNavBarInfo() {
    // 获取系统信息
    const systemInfo = wx.getSystemInfoSync();
    // 胶囊按钮位置信息
    const menuButtonInfo = wx.getMenuButtonBoundingClientRect();
    // 导航栏高度 = 状态栏到胶囊的间距（胶囊距上距离-状态栏高度） * 2 + 胶囊高度 + 状态栏高度
    this.globalData.navBarHeight = (menuButtonInfo.top - systemInfo.statusBarHeight) * 2 + menuButtonInfo.height + systemInfo.statusBarHeight;
    this.globalData.menuBotton = menuButtonInfo.top - systemInfo.statusBarHeight;
    this.globalData.menuRight = systemInfo.screenWidth - menuButtonInfo.right;
    this.globalData.menuHeight = menuButtonInfo.height;
    if (systemInfo.system.indexOf('iOS') > -1) {
      this.globalData.menuHeight = this.globalData.menuHeight - 4
    }
  },
  globalData: {
    userInfo: null,
    hasLogin: false,
    hasReg: false,
    systemInfo: null,
    windowHeight: null, // rpx换算px后的窗口高度
    screenHeight: null, // rpx换算px后的屏幕高度
    navBarHeight: 0, // 导航栏高度
    menuBotton: 0, // 胶囊距底部间距（保持底部间距一致）
    menuRight: 0, // 胶囊距右方间距（方保持左、右间距一致）
    menuHeight: 0, // 胶囊高度（自定义内容可与胶囊高度保证一致）
  },
  feedbackData: {
    feedbacksToBeRepliedNumber: 0,
    feedbacksRepliedNumber: 0
  }
})